eclipse => android studio

思路

1 在项目根目录添加 gradle
2 新建 module 代替原来的project,重新指定目录结构使其指向根目录下的资源路径

1 初始化gradle目录

  • 初始化gradle

$ cd PROJECT_ROOT
$ gradle init
$ git st
?? .gradle/
?? build.gradle
?? gradle/
?? gradlew
?? gradlew.bat
?? settings.gradle
  • 配置sdk信息

新建文件 local.properties
文件只有一行,指定sdk路径 sdk.dir=...

$ cat > local.properties
sdk.dir=/home/sctdroid/android_sdk/  
^C
$ cat local.properties 
sdk.dir=/home/sctdroid/android_sdk/
  • 配置build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

2 添加 module

  • 新建 module 文件夹

  • 添加 module 的 build.gradle

$ mkdir calculator
$ cd calculator
$ touch build.gradle
  • 在 build.gradle 中写入配置信息
    成功编译所需要的最小版本

// PROJECT_ROOT/build.gradle

apply plugin: 'com.android.application' // 导入预定义的 android task

android {
    compileSdkVersion 21
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.sctdroid.calculator" // 包名    }
    
    sourceSets { // **重点** 重新指定目标文件的位置。若不指定,gradle 则使用默认的目录结构进行编译,会出现找不到指定文件的错误
        main {
            manifest.srcFile '../AndroidManifest.xml'
            java.srcDirs = ['../src']
            resources.srcDirs = java.srcDirs
            aidl.srcDirs = java.srcDirs
            renderscript.srcDirs = java.srcDirs
            res.srcDirs = ['../res']
            assets.srcDirs = ['../assets']
            jniLibs.srcDirs = ['../jniLibs']
        }
        androidTest.setRoot('tests')
    }

    lintOptions {
        abortOnError false
    }

}

以计算器为例

// PROJECT_ROOT/calculator/build.gradle

apply plugin: 'com.android.application' // 导入预定义的 android task

android {
    compileSdkVersion 21
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.sctdroid.calculator" // 包名
        minSdkVersion 14
        targetSdkVersion 17
    }

    signingConfigs { // 添加签名文件
        custom {
            storeFile file("../app.keystore")
            storePassword "storepassword"
            keyAlias "app"
            keyPassword "keypassword"
        }
        // 多渠道打包在这里添加,格式和 custom 相同
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    sourceSets { // **重点** 重新指定目标文件的位置。若不指定,gradle 则使用默认的目录结构进行编译,会出现找不到指定文件的错误
        main {
            manifest.srcFile '../AndroidManifest.xml'
            java.srcDirs = ['../src']
            resources.srcDirs = java.srcDirs
            aidl.srcDirs = java.srcDirs
            renderscript.srcDirs = java.srcDirs
            res.srcDirs = ['../res']
            assets.srcDirs = ['../assets']
            jniLibs.srcDirs = ['../jniLibs']
        }
        androidTest.setRoot('tests')
    }
    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile files('../libs/libGoogleAnalyticsV2.jar')
}
  • 修改setting.gradle

添加
include ':calculator'

3. 不要忘了 .gitignore

# .gitignore

.gradle
build
/local.properties

可能遇到的问题

  • lint

* What went wrong:
Execution failed for task ':calculator:lint'.
> Lint found errors in the project; aborting build.
  
  Fix the issues identified by lint, or add the following to your build script to proceed with errors:
  ...
  android {
      lintOptions {
          abortOnError false
      }
  }
  ...

龟速
213 声望6 粉丝

我的主页,欢迎来访